﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IStudyAddViewModel.cs" company="ELEN 7045 GROUP II">
//  Contributed by E.Vosloo 
// </copyright>
// <summary>
//   The i study add view model.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Presentation.Module.StudyDefinition.Interfaces.ViewModels
{
    #region

    using System.Windows.Input;

    using Presentation.Module.StudyDefinition.Interfaces.Views;
    using Presentation.Module.StudyDefinition.Models;

    #endregion

    /// <summary>
    /// The i study add view model.
    /// </summary>
    public interface IStudyAddViewModel
    {
        #region Properties

        /// <summary>
        /// Gets AddStudy.
        /// </summary>
        ICommand AddStudy { get; }

        // void OnAddStudy(ObservableCollection<SubjectGroup> availableSubjectGroups);

        /// <summary>
        /// Gets AddTreatmentToStudy.
        /// </summary>
        ICommand AddTreatmentToStudy { get; }

        /// <summary>
        /// Gets LinkSubjectGroupToSelectedTreatment.
        /// </summary>
        ICommand LinkSubjectGroupToSelectedTreatment { get; }

        /// <summary>
        /// Gets RemoveTreatmentFromStudy.
        /// </summary>
        ICommand RemoveTreatmentFromStudy { get; }

        /// <summary>
        /// Gets SelectTreatment.
        /// </summary>
        ICommand SelectTreatment { get; }

        /// <summary>
        /// Gets or sets View.
        /// </summary>
        IStudyAddView View { get; set; }

        #endregion

        #region Public Methods

        /// <summary>
        /// The initialize.
        /// </summary>
        void Initialize();

        /// <summary>
        /// The on add study.
        /// </summary>
        void OnAddStudy();

        /// <summary>
        /// The on add treatment to study.
        /// </summary>
        /// <param name="treatment">
        /// The treatment.
        /// </param>
        void OnAddTreatmentToStudy(Treatment treatment);

        /// <summary>
        /// The on link subject group to selected treatment.
        /// </summary>
        /// <param name="subjectGroup">
        /// The subject group.
        /// </param>
        void OnLinkSubjectGroupToSelectedTreatment(SubjectGroup subjectGroup);

        /// <summary>
        /// The on remove treatment from study.
        /// </summary>
        /// <param name="treatment">
        /// The treatment.
        /// </param>
        void OnRemoveTreatmentFromStudy(Treatment treatment);

        /// <summary>
        /// The on select treatment.
        /// </summary>
        /// <param name="treatment">
        /// The treatment.
        /// </param>
        void OnSelectTreatment(Treatment treatment);

        #endregion
    }
}
